Leetcode JS 2623. Memoize 簡易筆記


Posted by Lucy on 2023-05-31

第一個就從這題開始啦,題目如下
Given a function fn, return a memoized version of that function.
A memoized function is a function that will never be called twice with the same inputs. Instead it will return a cached value.

先附上我的解法,雖然不是最佳解。

function memoize(fn) {
    let result=new Map();
    return function(...args) {
        let arg=JSON.stringify([...args])
        let value=result.get(arg) //如果找不到的話會是undefined
        if(value===undefined){ 
            value= fn(...args);
            result.set(arg,value)
        }
        return value;
    }
}

這題其實不難,也可以用Object解,不過這邊選擇用Map解,兩種方法思路上基本上是差不多的,如果找不到存下來的參數的話,就把參數跟結果記下來,後續呼叫時如果一樣的參數的話就回傳結果,不然就重新呼叫function。
之前的解法還可以在簡潔一點,提早return掉,像下面這樣。

function memoize(fn) {
    let result=new Map();
    return function(...args) {
        const arg=JSON.stringify(args)
        if(result.has(arg)){
            return result.get(arg)
        }
        const value=fn(...args);
        result.set(arg,value)
        return value;
    }
}

#Leetcode







Related Posts

前端工具 Gulp 與 Webpack 比較

前端工具 Gulp 與 Webpack 比較

Selenium instagram

Selenium instagram

HTML筆記

HTML筆記


Comments